package projectg06.hclinicas;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import static java.lang.System.out;
import projectg06.interfases.ModuleRunnable;
import projectg06.settings.Prop;

public class ParserIn implements ModuleRunnable{
	//Propiedades utilizadas por este modulo
	public final static Prop ARCHIVO_FUENTE=new Prop("GENERADOR.TXT","Nombre del archivo a partir del cual se va generar In Out y list");
	public final static Prop RUTA_ORIGEN=new Prop("rutaOrigen","Path especificado donde se espera encontrar el archivo fuente");

	public static void main(String[] args) throws Exception{
	}

	private static String leerArchivo(File root) throws FileNotFoundException {
		BufferedReader bf=new BufferedReader(new FileReader(root.getAbsolutePath()+"\\"+ARCHIVO_FUENTE.value));
		String line;
		StringBuffer buff=new StringBuffer(); 
		try {
			line = bf.readLine();
			while(line!=null){
				buff.append(line).append("\r\n");
				line=bf.readLine();
				
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return buff.toString();
	}

	@Override
	public void run(Properties prop){
		List <Prueba> tests;
		String path=prop.getProperty(RUTA_ORIGEN.value,".");
		File root=new File(path);
		if(!root.exists()){
			out.println("La ruta especificada no existe path:["+path+"]");
			System.exit(1);
		}
		try{
		String fuente=leerArchivo(root);
		String separador="===";
		String[] textos=fuente.split(separador);
		/*
		=== 001_prueba_del_enunciado ===
		algun texto de entrada
		===
		algun texto de salida
		*/
		tests=new ArrayList();
		for(int i=1;textos.length>i+2;i+=3){
			tests.add(new Prueba(textos[i], textos[i+1],textos[i+2]));
		}
		OutFileManager ofm=new OutFileManager(root, tests);
		System.out.println(ofm);
		ofm.generarInFlles();
		ofm.generarOutFiles();
		ofm.generarListFlle();
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}

}
